Docker 端口映射和容器互联

1 背景知识

在生产环境中需要多个服务组件共同写作,这依赖于容器之间能够相互访问。
通过网络访问之外,Docker还允许容器内进行端口映射。
另外一个是互联机制实现过个容器通过容器名进行快速访问。

2 Docker 端口映射实现访问容器

2.1 参数说明

当容器中运行一些网络应用,要让外部访问这些应用是,可以通过 -P-p 指定端口映射。端口映射可以理解为端口转发。
相关参数

参数 说明
"-P" Docker 随机映射一个49000~4990端口到容器内部。
-p Docker 指定固定一个段鸥到容器内部。

2.2 映射到一个随机端口

docker run -d -P registry:2
docker ps -a
//屏幕输出:
3e2c2f5ab03e   registry:2        "/entrypoint.sh /etc…"   4 seconds ago    Up 3 seconds                 0.0.0.0:32769->5000/tcp, :::32769->5000/tcp   trusting_leakey

2.3 映射到指定端口

docker run -d -p 5000:5000 registry:2
docker ps -a
//屏幕输出:
ff87410fdc32   registry:2   "/entrypoint.sh /etc…"   3 seconds ago    Up 2 seconds    0.0.0.0:5000->5000/tcp, :::5000->5000/tcp     wonderful_robinson

2.4 查看映射端口配置

使用 docker port 命令来查看当前映射的端口配置和绑定的IP地址。

docker port wonderful_robinson
//屏幕输出: 
5000/tcp -> 0.0.0.0:5000
5000/tcp -> [::]:5000

3 Docker 容器互联

使用 --link 参数可以让容器之间安全地进行交互。

3.1 创建数据库容器

docker run -d --name db postgres

3.2 创建新的web 容器

docker run -d -p 5000:5000 --name registry --link db:db registry:2 

--link 的参数格式为--link name:alias

其中name 是要连接容器的名称,alias 是这个连接的别名。
这种互联机制相当于在两个容器之间创建了一个虚拟机通道。